package leetcode_二叉树;

import general_class.TreeNode;

/**
 * 对称二叉树
 * 满足条件
 * 根节点相同
 * 两个根相同 , 一个根的左子树与另一个根的右子树相同
 * 一个根的右子树与另一个根的左子树相同
 * 算法 :
 * 递归
 * 如果两个根不相同 , 直接返回 false
 * 如果两个根都为空 , 直接返回 true
 * 如果相同且不为空 , 则比较子树
 *
 * @author origin
 */
public class _101 {

    public boolean isSymmetric(TreeNode root) {
        return isEquals(root.left, root.right);
    }

    public boolean isEquals(TreeNode left, TreeNode right) {
        if (left == null && right == null) return true;
        if (left == null || right == null || left.val != right.val) return false;
        return isEquals(left.left, right.right) && isEquals(left.right, right.left);
    }
}
